Data processing devices, such as personal computer and server systems are well known in the art. Such devices have attained widespread use and typically include one or more central processing units and associated volatile and non-volatile memory, including random access memory (RAM) and basic input/output system read only memory (BIOS ROM), along with one or more input/output devices and external interfaces.
When a data processing device is reset or initially powered-on, an initialization, or boot process begins. The BIOS generally provides instructions for the tasks that the device performs at start-up. These tasks, may include, for example, hardware initialization, Power-On Self Test (POST), and booting an operating system. Furthermore, the BIOS provides an interface to the underlying hardware for the operating system in the form of a library of interrupt handlers.
Some BIOS systems permit interruption of the initialization process to allow system configuration, maintenance, diagnostic test, or the like. Typically, such BIOS systems interrupt and stop the initialization process upon receipt of an interrupt signal, such as that generated by a certain keystroke or keystroke sequence. Upon receipt of such a keystroke, the BIOS system stops initialization and waits indefinitely for a valid command. If such a valid command is not entered, the BIOS system will not resume initialization, thus preventing initialization of the device.
In some instances, a BIOS system may stop initialization in response to receiving a spurious interrupt signal rather than an intentional keystroke by a user. The spurious interrupt signal may be generated, for example, by an inadvertent keystroke by the user or by random noise on an input line, which may cause such a spurious interrupt signal to be generated that the BIOS interprets as an interrupt signal. A system management interrupt signal may also cause a BIOS to stop and to wait indefinitely for user input.
When, in response to an interrupt signal, a BIOS stops initialization and waits indefinitely for a valid user command. If no such valid user command is provided, the initialization process will not resume and the associated device will not complete the initialization process.
If the user is not monitoring a console associated with the device, the user may not be aware that the device is waiting for a valid user command. Rather, the user may believe that the device is malfunctioning and that a service call is required.
One conventional approach for limiting the potential for an interrupt signal to stop hardware initialization indefinitely is to only permit an interrupt signal to be received during a small time window. Some personal computer BIOS systems function in this manner. A limitation of this approach is that initialization of such a BIOS system may be indefinitely stopped if the interrupt signal is received during the time window. Another limitation is that the smaller this window, the less convenient it becomes for the interactive user.
Another conventional approach for limiting the potential for an interrupt signal to stop hardware initialization is to design the entry sequence such that the entry sequence is not likely to be accidentally typed. However, this approach is also limited in that if the entry sequence, or another interrupt signal, is received by the BIOS, the BIOS may be indefinitely stopped until suitable action, such as the entry of a valid command, is taken.
Accordingly, a need exists for a system and method for detecting and handling an interrupt signal such that system operation is not impaired.